home *** CD-ROM | disk | FTP | other *** search
/ Fun & Games 2 (Canada) / Fun & Games CD-ROM (Canada).bin / games / disk157 / dominoes.bas (.txt) next >
Encoding:
GW-BASIC  |  1987-11-18  |  13.0 KB  |  391 lines

  1. 1  '7/19/82 9:00pm
  2. 10  SCREEN 0,0,0:WIDTH 80:COLOR 3,0:KEY OFF:DEF SEG:DEFINT A-D:DEFSTR Z
  3. 20  YSCR=0:MYSCR=0:XLIN=1:XPOS=1:ON KEY(10) GOSUB 3300
  4. 30  GOSUB 3030:GOSUB 3450:GOSUB 2130
  5. 40  XLIN=1:XPOS=1:GOSUB 3350:FSTTME=1:NOSPR=1:PLAYED=1
  6. 50  XXFLG=0:PL1=1:GOSUB 2690:GOSUB 580:IF XXFLG THEN PL1=0:GOTO 80 ELSE GOSUB 150:GOSUB 270
  7. 60  IF INVD THEN GOSUB 2060:GOTO 50 ELSE NOPLAY=0
  8. 70  GOSUB 1250:GOSUB 1560:YSCR=YSCR+HOLDY:PL1=0:IF PLNO=0 THEN 3610
  9. 80  GOSUB 3820:FOR A=3 TO 6:LOCATE A,1:PRINT SPC(25):NEXT:LOCATE 3,1:PRINT "One Moment Please":PRINT "I am Thinking
  10. 90  GOSUB 760:IF INVD THEN GOSUB 1330:IF EMPT THEN GOSUB 3550:GOTO 50
  11. 100  IF INVD THEN CONO=CONO+1:MY$(CONO)=NEXTBN$:GOTO 90 ELSE NOPLAY=0
  12. 110  GOSUB 1290:GOSUB 1560:MYSCR=MYSCR+HOLDY:IF CONO=0 THEN 3610
  13. 120  COLOR 4,0:LOCATE 1,66:PRINT "Dominoes Played":COLOR 3,0
  14. 130  FOR A=1 TO 5:LOCATE A,1:PRINT SPC(25):NEXT
  15. 140  LOCATE 4,1:FOR A=1 TO CONO:PRINT "POINTPOINT":NEXT:GOSUB 3820:GOTO 50
  16. 150  DLN=15:DOM=40:DD=2:IF FSTTME THEN RETURN
  17. 160  DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 160
  18. 170  LOCATE DLN,DOM,0:SAVE1=SCREEN(DLN,DOM):COLOR 31:PRINT CHR$(1);:COLOR 6
  19. 180  Z=INKEY$:IF Z="" THEN 180
  20. 190  IF LEN(Z)>1 THEN Z1=RIGHT$(Z,1) ELSE Z1=""
  21. 200  IF Z="8" OR Z1="H" THEN DLN=5 :DOM=40:DD=0
  22. 210  IF Z="6" OR Z1="M" THEN DLN=10:DOM=55:DD=1
  23. 220  IF Z="2" OR Z1="P" THEN DLN=15:DOM=40:DD=2
  24. 230  IF Z="4" OR Z1="K" THEN DLN=10:DOM=25:DD=3
  25. 240  LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);
  26. 250  IF Z<>CHR$(13) THEN 170
  27. 260  LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);:RETURN
  28. 270  INVD=0:OS=0:IS=0
  29. 280  IF FSTTME THEN 570
  30. 290  IF TBL$(DD)="  " THEN 370
  31. 300  ZL=LEFT$(TBL$(DD),1):ZLP=LEFT$(YOU$(PLA),1):ZRP=RIGHT$(YOU$(PLA),1)
  32. 310  IF ZL=ZLP THEN IS=1:GOTO 340
  33. 320  IF ZL=ZRP THEN OS=1:GOTO 340
  34. 330  INVD=1:RETURN
  35. 340  INVD=0
  36. 350  IF OS THEN TBL$(DD)=ZLP+ZRP:GOTO 480
  37. 360  IF IS THEN TBL$(DD)=ZRP+ZLP:GOTO 480
  38. 370  ZL=LEFT$(TBL$(4),1):ZR=RIGHT$(TBL$(4),1)
  39. 380  ZLP=LEFT$(YOU$(PLA),1):ZRP=RIGHT$(YOU$(PLA),1)
  40. 390  IF ZL=ZR THEN 450
  41. 400  IF DD=0 THEN IF ZL=ZLP THEN IS=1:GOTO 500
  42. 410  IF DD=0 THEN IF ZL=ZRP THEN OS=1:GOTO 500
  43. 420  IF DD=2 THEN IF ZR=ZLP THEN IS=1:GOTO 500
  44. 430  IF DD=2 THEN IF ZR=ZRP THEN OS=1:GOTO 500
  45. 440  GOTO 330
  46. 450  IF ZL=ZLP THEN IS=1:GOTO 500
  47. 460  IF ZL=ZRP THEN OS=1:GOTO 500
  48. 470  GOTO 330
  49. 480  CUR$=TBL$(DD)
  50. 490  GOSUB 2340:PLNO=PLNO-1:RETURN
  51. 500  IF LEFT$(TBL$(4),1)<>RIGHT$(TBL$(4),1) THEN 550
  52. 510  IF TBL$(1)="  " AND TBL$(2)="  " AND DD=1 THEN DD=2:GOTO 550
  53. 520  IF TBL$(3)="  " AND TBL$(2)="  " AND DD=3 THEN DD=2:GOTO 550
  54. 530  IF TBL$(1)="  " AND TBL$(0)="  " AND DD=1 THEN DD=0:GOTO 550
  55. 540  IF TBL$(3)="  " AND TBL$(0)="  " AND DD=3 THEN DD=0
  56. 550  IF OS THEN TBL$(DD)=YOU$(PLA):GOTO 480
  57. 560  IF IS THEN TBL$(DD)=ZRP+ZLP:GOTO 480
  58. 570  TBL$(4)=YOU$(PLA):CUR$=TBL$(4):GOTO 490
  59. 580  GOSUB 1770:IF XXFLG THEN RETURN
  60. 590  PLA=FIX(PLNO/2+0.5):DLN=19
  61. 600  IF PLNO AND 1 THEN DOM=40 ELSE DOM=35
  62. 610  IF PLNO>8 THEN DOM=35:PLA=4
  63. 620  DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 620
  64. 630  LOCATE DLN,DOM,0:SAVE1=SCREEN(DLN,DOM):COLOR 26:PRINT CHR$(1);:COLOR 14
  65. 640  Z=INKEY$:IF Z="" THEN 640
  66. 650  IF LEN(Z)>1 THEN Z1=RIGHT$(ZDEFSTR1) ELSE Z1=""
  67. 660  IF Z="4" OR Z1="K" THEN DOM=DOM-10:PLA=PLA-1:GOTO 700
  68. 670  IF Z="6" OR Z1="M" THEN DOM=DOM+10:PLA=PLA+1:GOTO 700
  69. 680  IF Z<>CHR$(13) THEN 640
  70. 690  LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);:RETURN
  71. 700  IF PLA=0 THEN PLA=1:DOM=DOM+10:GOTO 750
  72. 710  IF PLA>PLNO THEN PLA=PLNO:DOM=DOM-10:GOTO 750
  73. 720  IF ONEROW GOTO 750
  74. 730  IF DOM>80 THEN DOM=DOM-80:DLN=DLN+3:GOTO 750
  75. 740  IF DOM<0 THEN DOM=DOM+80:DLN=DLN-3:GOTO 750
  76. 750  LOCATE CSRLIN,POS(0)-1:PRINT CHR$(SAVE1);:GOTO 630
  77. 760  IS=0:OS=0:INVD=0:PLFG=0:HOLD=0:HH1=0:HH2=0
  78. 770  FOR DD=3 TO 0 STEP-1
  79. 780    FOR PLA=1 TO CONO
  80. 790      ZLM=LEFT$(TBL$(4),1):ZRM=RIGHT$(TBL$(4),1)
  81. 800      ZL=LEFT$(TBL$(DD),1):ZLP=LEFT$(MY$(PLA),1):ZRP=RIGHT$(MY$(PLA),1)
  82. 810      IF TBL$(DD)="  " THEN 840
  83. 820      IF ZL=ZRP THEN OS=1:GOSUB 1160:GOTO 970
  84. 830      IF ZL=ZLP THEN IS=1:GOSUB 1160:GOTO 970 ELSE 970
  85. 840      IF ZLM<>ZRM THEN 930
  86. 850      IF ZLM=ZRP AND DD=0 THEN OS=1:GOSUB 1160:GOTO 970
  87. 860      IF ZLM=ZLP AND DD=0 THEN IS=1:GOSUB 1160:GOTO 970
  88. 870      IF ZLM=ZRP AND DD=2 THEN OS=1:GOSUB 1160:GOTO 970
  89. 880      IF ZLM=ZLP AND DD=2 THEN IS=1:GOSUB 1160:GOTO 970
  90. 890      IF ZLM=ZLP AND DD=1 THEN IS=1:GOSUB 1160:GOTO 970
  91. 900      IF ZLM=ZRP AND DD=1 THEN OS=1:GOSUB 1160:GOTO 970
  92. 910      IF ZLM=ZLP AND DD=3 THEN IS=1:GOSUB 1160:GOTO 970
  93. 920      IF ZLM=ZRP AND DD=3 THEN OS=1:GOSUB 1160:GOTO 970 ELSE 970
  94. 930      IF ZLM=ZLP AND DD=0 THEN IS=1:GOSUB 1160:GOTO 970
  95. 940      IF ZLM=ZRP AND DD=0 THEN OS=1:GOSUB 1160:GOTO 970
  96. 950      IF ZRM=ZLP AND DD=2 THEN IS=1:GOSUB 1160:GOTO 970
  97. 960      IF ZRM=ZRP AND DD=2 THEN OS=1:GOSUB 1160:GOTO 970
  98. 970    NEXT PLA
  99. 980  NEXT DD
  100. 990  IF LEFT$(TBL$(4),1)<>RIGHT$(TBL$(4),1) THEN 1020
  101. 1000  IF TBL$(1)="  " AND TBL$(2)="  " AND HH1 THEN HH2=2:GOTO 1020
  102. 1010  IF TBL$(1)="  " AND TBL$(2)="  " AND PLFG THEN DRH=2:GOTO 1020
  103. 1020  IF HH1 THEN PLA=HH1:DRH=HH2:GOTO 1050
  104. 1030  IF PLFG THEN PLA=PLFG:GOTO 1050
  105. 1040  INVD=1:RETURN
  106. 1050  ZLP1=LEFT$(MY$(PLA),1):ZRP1=RIGHT$(MY$(PLA),1)
  107. 1060  IF TBL$(DRH)<>"  " THEN 1100
  108. 1070  ZL1=LEFT$(TBL$(4),1):ZR1=RIGHT$(TBL$(4),1)
  109. 1080  IF ZL1=ZR1 THEN 1110
  110. 1090  IF DRH=2 THEN SWAP ZL1,ZR1:GOTO 1110 ELSE 1110
  111. 1100  ZL1=LEFT$(TBL$(DRH),1):ZR1=RIGHT$(TBL$(DRH),1)
  112. 1110  IF ZL1=ZLP1 THEN IS=1:OS=0:GOTO 1130
  113. 1120  IF ZL1=ZRP1 THEN OS=1:IS=0:GOTO 1130
  114. 1130  IF IS THEN TBL$(DRH)=ZRP1+ZLP1:CUR$=TBL$(DRH):GOTO 1150
  115. 1140  IF OS THEN TBL$(DRH)=ZLP1+ZRP1:CUR$=TBL$(DRH):GOTO 1150
  116. 1150  GOSUB 2340:LOCATE 1,1:CONO=CONO-1:RETURN
  117. 1160  PLFG=PLA:DRH=DD
  118. 1170  FOR A=0 TO 4:SAV$(A)=TBL$(A):NEXT
  119. 1180  ZLP2=LEFT$(MY$(PLA),1):ZRP2=RIGHT$(MY$(PLA),1)
  120. 1190  IF IS THEN TBL$(DD)=ZRP2+ZLP2
  121. 1200  IF OS THEN TBL$(DD)=ZLP2+ZRP2
  122. 1210  GOSUB 1560
  123. 1220  IF HOLDY AND HOLD<=HOLDY THEN HOLD=HOLDY ELSE 1240
  124. 1230  HH1=PLA:HH2=DD
  125. 1240  FOR A=0 TO 4:TBL$(A)=SAV$(A):NEXT:RETURN
  126. 1250  FOR A=1 TO PLNO
  127. 1260    IF A<PLA THEN 1280
  128. 1270    YOU$(A)=YOU$(A+1)
  129. 1280  NEXT:RETURN
  130. 1290  FOR A=1 TO CONO
  131. 1300    IF A<PLA THEN 1320
  132. 1310    MY$(A)=MY$(A+1)
  133. 1320  NEXT:RETURN
  134. 1330  IF BNPTR=29 THEN EMPT=1:RETURN
  135. 1340  NEXTBN$=BONE$(BNPTR):BNPTR=BNPTR+1:RETURN
  136. 1350  IF NOSPR THEN 1360 ELSE RETURN
  137. 1360  IF LEFT$(TBL$(4),1)=RIGHT$(TBL$(4),1) THEN 1550
  138. 1370  FOR A=0 TO 3
  139. 1380    ZL=LEFT$(TBL$(A),1):ZR=RIGHT$(TBL$(A),1)
  140. 1390    IF TBL$(A)="  " THEN 1410
  141. 1400    IF ZL=ZR THEN 1420
  142. 1410  NEXT:RETURN
  143. 1420  IF A<>0 THEN 1460
  144. 1430  IF TBL$(2)<>"  " THEN TBL$(4)=TBL$(0):TBL$(0)="  ":GOTO 1560
  145. 1440  SWAP TBL$(2),TBL$(4):SWAP TBL$(0),TBL$(4)
  146. 1450  TBL$(2)=RIGHT$(TBL$(2),1)+LEFT$(TBL$(2),1):GOTO 1560
  147. 1460  IF A<>1 THEN 1490
  148. 1470  IF TBL$(3)<>"  " THEN TBL$(4)=TBL$(1):TBL$(1)="  ":GOTO 1560
  149. 1480  SWAP TBL$(3),TBL$(4):SWAP TBL$(1),TBL$(4):GOTO 1560
  150. 1490  IF A<>2 THEN 1520
  151. 1500  IF TBL$(0)<>"  " THEN TBL$(4)=TBL$(2):TBL$(2)="  ":GOTO 1560
  152. 1510  SWAP TBL$(0),TBL$(4):SWAP TBL$(2),TBL$(4):GOTO 1560
  153. 1520  IF A<>3 THEN RETURN
  154. 1530  IF TBL$(1)="  " THEN SWAP TBL$(1),TBL$(4):SWAP TBL$(3),TBL$(4):GOTO 1560
  155. 1540  TBL$(4)=TBL$(3):TBL$(3)="  "
  156. 1550  NOSPR=0:RETURN
  157. 1560  HOLDY=0:FLAG1=0:PTOT=0
  158. 1570   PLM=VAL(LEFT$(TBL$(4),1)):PRM=VAL(RIGHT$(TBL$(4),1))
  159. 1580   IF FSTTME THEN 1750
  160. 1590  FOR A=0 TO 3
  161. 1600   PL=VAL(LEFT$(TBL$(A),1)):PR=VAL(RIGHT$(TBL$(A),1))
  162. 1610   IF TBL$(A)="  " THEN 1640
  163. 1620   PTOT=PTOT+PL:IF PL=PR THEN PTOT=PTOT+PR
  164. 1630   GOTO 1720
  165. 1640   IF PLM<>PRM THEN 1700
  166. 1650   IF FLAG1 THEN 1720
  167. 1660   IF A=0 OR A=2 THEN PTOT=PTOT+PRM+PLM:GOTO 1690
  168. 1670   IF TBL$(1)="  " THEN PTOT=PTOT+PLM
  169. 1680   IF TBL$(3)="  " THEN PTOT=PTOT+PLM
  170. 1690   FLAG1=1:GOTO 1720
  171. 1700   IF A=0 THEN PTOT=PTOT+PLM:GOTO 1720
  172. 1710   IF A=2 THEN PTOT=PTOT+PRM:GOTO 1720
  173. 1720  NEXT A
  174. 1730  IF PTOT/5=PTOT\5 THEN 1740 ELSE RETURN
  175. 1740  HOLDY=PTOT:RETURN
  176. 1750  A=PLM+PRM:IF A/5=A\5 THEN HOLDY=A ELSE HOLDY=0
  177. 1760  FSTTME=0:RETURN
  178. 1770  IF FSTTME THEN RETURN
  179. 1780  C=0
  180. 1790  FOR A=0 TO 3
  181. 1800    IF TBL$(A)="  " THEN 1860 ELSE C=C+1
  182. 1810    ZL=LEFT$(TBL$(A),1)
  183. 1820    FOR B=1 TO PLNO
  184. 1830      ZLP=LEFT$(YOU$(B),1):ZRP=RIGHT$(YOU$(B),1)
  185. 1840      IF ZL=ZLP OR ZL=ZRP THEN 2050
  186. 1850    NEXT B
  187. 1860  NEXT A
  188. 1870  IF C<4 THEN 1910
  189. 1880  GOSUB 1330:IF EMPT THEN XXFLG=1:GOSUB 3550:RETURN
  190. 1890  PLNO=PLNO+1:YOU$(PLNO)=NEXTBN$
  191. 1900  GOSUB 2690:GOTO 1780
  192. 1910  ZL=LEFT$(TBL$(4),1):ZR=RIGHT$(TBL$(4),1)
  193. 1920  IF ZL=ZR THEN 1980
  194. 1930  FOR A=1 TO PLNO
  195. 1940    ZLP=LEFT$(YOU$(A),1):ZRP=RIGHT$(YOU$(A),1)
  196. 1950    IF TBL$(0)="  " AND (ZL=ZLP OR ZL=ZRP) THEN 2050
  197. 1960    IF TBL$(2)="  " AND (ZR=ZLP OR ZR=ZRP) THEN 2050
  198. 1970  NEXT A:GOTO 1880
  199. 1980  FOR B=0 TO 3
  200. 1990    IF TBL$(B)<>"  " THEN 2040
  201. 2000    FOR A=1 TO PLNO
  202. 2010      ZLP=LEFT$(YOU$(A),1):ZRP=RIGHT$(YOU$(A),1)
  203. 2020      IF ZL=ZLP OR ZL=ZRP THEN 2050
  204. 2030    NEXT A
  205. 2040  NEXT B:GOTO 1880
  206. 2050  RETURN
  207. 2060  LOCATE 25,1:PRINT SPC(79);:COLOR 31,0:LOCATE 25,25
  208. 2070  PRINT "Invalid Move. Please Try Again.";:COLOR 3,0:INVD=0:GOTO 2080
  209. 2080  DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 2080
  210. 2090  FOR XX=1 TO 1000
  211. 2100   Z=INKEY$:IF Z<>"" THEN 2120
  212. 2110  NEXT
  213. 2120  LOCATE 25,1:PRINT SPC(79);:RETURN
  214. 2130  FOR A=0 TO 6:READ DT$(A):NEXT
  215. 2140  DATA "   "," <UNK! {00F9}> ",". <UNK! {00F9}>",".<UNK! {00F9}>.",": :",":<UNK! {00F9}>:",":::"
  216. 2150  RANDOMIZE(VAL(RIGHT$(TIME$,2)))
  217. 2160  DIM PLD$(28),BONE$(28),MY$(16),YOU$(16):C=0:B=-1
  218. 2170  FOR A=1 TO 28
  219. 2180    B=B+1
  220. 2190        BONE$(A)=RIGHT$(STR$(B),1)+RIGHT$(STR$(C),1)
  221. 2200    IF B=6 THEN B=C:C=C+1
  222. 2210  NEXT
  223. 2220  FOR A=1 TO 28
  224. 2230    B=FIX(RND*28)+1:C=FIX(RND*28)+1:IF B=C THEN 2230
  225. 2240    SWAP BONE$(B),BONE$(C)
  226. 2250  NEXT
  227. 2260  FOR A=0 TO 4:TBL$(A)="  ":NEXT
  228. 2270  B=0
  229. 2280  FOR A=1 TO 13 STEP 2
  230. 2290    B=B+1
  231. 2300    YOU$(B)=BONE$(A)
  232. 2310    MY$(B)=BONE$(A+1)
  233. 2320  NEXT:PLNO=7:CONO=7:BNPTR=15
  234. 2330  RETURN
  235. 2340  CLS:GOSUB 1350:GOSUB 3350:CUR$=LEFT$(CUR$,1)+":"+RIGHT$(CUR$,1)
  236. 2350  PLD$(PLAYED)=CUR$
  237. 2360  PLAYED=PLAYED+1
  238. 2370  FOR SLOC=0 TO 3
  239. 2380    IF TBL$(SLOC)="  " THEN 2410
  240. 2390    ZL=LEFT$(TBL$(SLOC),1):ZR=RIGHT$(TBL$(SLOC),1)
  241. 2400    IF ZL<>ZR THEN GOSUB 2510 ELSE GOSUB 2450
  242. 2410  NEXT
  243. 2420  ZL=LEFT$(TBL$(4),1):ZR=RIGHT$(TBL$(4),1)
  244. 2430  IF ZL=ZR THEN GOSUB 2500 ELSE GOSUB 2560
  245. 2440  RETURN
  246. 2450  ON SLOC+1 GOSUB 2460,2480,2490,2470,2500:RETURN
  247. 2460  SLN=6:HS=36:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2640:RETURN
  248. 2470  SLN=8:HS=28:TOP=VAL(ZL):BOT=VAL(ZR):GOSUB 2570:RETURN
  249. 2480  SLN=8:HS=50:TOP=VAL(ZL):BOT=VAL(ZR):GOSUB 2570:RETURN
  250. 2490  SLN=12:HS=36:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2640:RETURN
  251. 2500  SLN=9:HS=36:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2640:RETURN
  252. 2510  ON SLOC+1 GOSUB 2520,2540,2550,2530,2560:RETURN
  253. 2520  SLN=3:HS=38:TOP=VAL(ZR):BOT=VAL(ZL):GOSUB 2570:RETURN
  254. 2530  SLN=9:HS=26:LFT=VAL(ZR):RHT=VAL(ZL):GOSUB 2640:RETURN
  255. 2540  SLN=9:HS=46:LFT=VAL(ZL):RHT=VAL(ZR):GOSUB 2640:RETURN
  256. 2550  SLN=13:HS=38:TOP=VAL(ZL):BOT=VAL(ZR):GOSUB 2570:RETURN
  257. 2560  SLN=8:HS=38:TOP=VAL(ZR):BOT=VAL(ZL):GOSUB 2570:RETURN
  258. 2570  COLOR 6,0:LOCATE SLN+0,HS:PRINT "VARPTRSOUNDSOUNDSOUNDCOLOR"
  259. 2580  LOCATE SLN+1,HS:PRINT "CALL   CALL"
  260. 2590  LOCATE SLN+2,HS:PRINT "BLOADSOUNDSOUNDSOUND<0xB4!>"
  261. 2600  LOCATE SLN+3,HS:PRINT "CALL   CALL"
  262. 2610  LOCATE SLN+4,HS:PRINT "CLSSOUNDSOUNDSOUND'":COLOR 15,0
  263. 2620  LOCATE SLN+1,HS+1:PRINT DT$(BOT)
  264. 2630  LOCATE SLN+3,HS+1:PRINT DT$(TOP):COLOR 7,0:RETURN
  265. 2640  COLOR 6,0:LOCATE SLN+0,HS:PRINT "VARPTRSOUNDSOUNDSOUNDBSAVESOUNDSOUNDSOUNDCOLOR"
  266. 2650  LOCATE SLN+1,HS:PRINT "CALL   CALL   CALL"
  267. 2660  LOCATE SLN+2,HS:PRINT "CLSSOUNDSOUNDSOUNDMOTORSOUNDSOUNDSOUND'":COLOR 15,0
  268. 2670  LOCATE SLN+1,HS+1:PRINT DT$(RHT)
  269. 2680  LOCATE SLN+1,HS+5:PRINT DT$(LFT):COLOR 7,0:RETURN
  270. 2690  ONEROW=1
  271. 2700  LOCATE ,,0
  272. 2710  SLN=19
  273. 2720  HS=(80-(10*PLNO))\2+1
  274. 2730  IF HS<1 THEN HS=1
  275. 2740  FOR I=SLN TO 6+SLN-1
  276. 2750    LOCATE I,1:PRINT SPC(79);
  277. 2760  NEXT I
  278. 2770  FOR A=1 TO PLNO:COLOR 14,0
  279. 2780    LOCATE SLN,HS:  PRINT "VARPTRSOUNDSOUNDSOUNDBSAVESOUNDSOUNDSOUNDCOLOR";
  280. 2790    LOCATE SLN+1,HS:PRINT "CALL   CALL   CALL";
  281. 2800    LOCATE SLN+2,HS:PRINT "CLSSOUNDSOUNDSOUNDMOTORSOUNDSOUNDSOUND'";
  282. 2810    HS=HS+10
  283. 2820    IF HS>80 THEN SLN=SLN+3:HS=1:ONEROW=0
  284. 2830  NEXT
  285. 2840  LOCATE 24,1,O:PRINT "Use Cursor Arrows To Choose And Position Dominoe    Strike Enter Key When Ready";
  286. 2850  SLN=19
  287. 2860  HS=((80-(10*PLNO))\2)+2
  288. 2870  IF HS<1 THEN HS=2
  289. 2880  FOR A=1 TO PLNO:COLOR 15,0
  290. 2890  ON VAL(LEFT$(YOU$(A),1))+1 GOSUB 2960,2970,2980,2990,3000,3010,3020
  291. 2900    HS=HS+4
  292. 2910  ON VAL(RIGHT$(YOU$(A),1))+1 GOSUB 2960,2970,2980,2990,3000,3010,3020
  293. 2920    HS=HS+6
  294. 2930    IF HS>80 THEN SLN=SLN+3:HS=2
  295. 2940  NEXT
  296. 2950  COLOR 7,0:RETURN
  297. 2960  LOCATE SLN+1,HS:PRINT DT$(0):RETURN
  298. 2970  LOCATE SLN+1,HS:PRINT DT$(1):RETURN
  299. 2980  LOCATE SLN+1,HS:PRINT DT$(2):RETURN
  300. 2990  LOCATE SLN+1,HS:PRINT DT$(3):RETURN
  301. 3000  LOCATE SLN+1,HS:PRINT DT$(4):RETURN
  302. 3010  LOCATE SLN+1,HS:PRINT DT$(5):RETURN
  303. 3020  LOCATE SLN+1,HS:PRINT DT$(6):RETURN
  304. 3030  CLS:COLOR 6,0:GOSUB 3430
  305. 3040  LOCATE 1,1:PRINT STRING$(80,219)
  306. 3050  FOR A=2 TO 22:LOCATE A,1:PRINT "CSRLIN":LOCATE A,80:PRINT "CSRLIN":NEXT
  307. 3060  LOCATE 23,1:PRINT STRING$(80,219);
  308. 3070  LOCATE 3,33:COLOR 11,0:PRINT "D O M I N O E S
  309. 3080  COLOR 15,0:LOCATE 8,25:PRINT "Would You Like instructions? <Y/N>"
  310. 3090  GOSUB 3380:IF Z="N" THEN CLS:RETURN ELSE IF Z<>"Y" THEN 3090
  311. 3100  COLOR 3,0:LOCATE 4,19:PRINT  "This is single spinner Dominoes,  that is you
  312. 3110  LOCATE 5,19:PRINT  "can only play in any direction off  the first
  313. 3120  LOCATE 6,19:PRINT  "spinner or double dominoe (1:1,2:2,3:3, etc).
  314. 3130  LOCATE 7,19:PRINT  "The object of the game  is to score points in
  315. 3140  LOCATE 8,19:PRINT  "multiples of  `5'  by adding the total of all
  316. 3150  LOCATE 9,19:PRINT "open ends of the playing board. You can score
  317. 3160  LOCATE 10,19:PRINT "points  only  if the game board total is five
  318. 3170  LOCATE 11,19:PRINT "or a multiple of five. You may start each new
  319. 3180  LOCATE 12,19:PRINT "hand  by playing  the  first dominoe.  If the
  320. 3190  LOCATE 13,19:PRINT "total of both ends equals  five  or  ten, you
  321. 3200  LOCATE 14,19:PRINT "score that number of points.  From that point
  322. 3210  LOCATE 15,19:PRINT "on,  you and the computer build onto the ends
  323. 3220  LOCATE 16,19:PRINT "trying to  score  points.   If no dominoe end
  324. 3230  LOCATE 17,19:PRINT "in your hand matches an open end on the board,
  325. 3240  LOCATE 18,19:PRINT "the computer will draw from the boneyard.  If
  326. 3250  LOCATE 19,19:PRINT "the boneyard is  empty,  the other player may
  327. 3260  LOCATE 20,19:PRINT "play again.  Use the Cursor Arrows and  Enter
  328. 3270  LOCATE 21,19:PRINT "Key to select and play your dominoes.
  329. 3280  LOCATE 25,25:COLOR 15,0:PRINT "Strike Any Key To Continue";
  330. 3290  Z=INKEY$:IF Z="" THEN 3290 ELSE CLS:RETURN
  331. 3300  KEY(10) OFF:XLIN=CSRLIN:XPOS=POS(0):LOCATE 25,1:PRINT SPC(79);
  332. 3310  LOCATE 25,21:PRINT "Do You Wish To Leave This Game? <Y/N>";
  333. 3320  Z=INKEY$:IF Z="" THEN 3320
  334. 3330  IF Z="y" OR Z="Y" THEN RUN"menu
  335. 3340  IF Z<>"n" AND Z<>"N" THEN 3320
  336. 3350  LOCATE 25,1:PRINT SPC(79);:LOCATE 25,24:COLOR 0,7
  337. 3360  PRINT " Strike <F10> To Leave This Game ";:COLOR 7,0:LOCATE XLIN,XPOS,0
  338. 3370  KEY(10) ON:RETURN
  339. 3380  DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 3380
  340. 3390  Z=INKEY$:IF Z="" THEN 3390
  341. 3400  IF Z<"a" OR Z>"z" THEN 3420
  342. 3410  Z=CHR$(ASC(Z)-32)
  343. 3420  RETURN
  344. 3430  FOR A=1 TO 9:ON KEY(A) GOSUB 3440:KEY(A) ON:NEXT
  345. 3440  RETURN
  346. 3450  CLS
  347. 3460  LOCATE 6,30:COLOR 0,7:PRINT " A ";:COLOR 3,0:PRINT" Play To 100 Points"
  348. 3470  LOCATE 8,30:COLOR 0,7:PRINT " B ";:COLOR 3,0:PRINT" Play To 250 Points"
  349. 3480  LOCATE 10,30:COLOR 0,7:PRINT " C ";:COLOR 3,0:PRINT" Play To 500 Points"
  350. 3490  COLOR 3,0:LOCATE 4,25:PRINT"Please Choose A Game <A> <B> or <C>"
  351. 3500  Z=INKEY$:IF Z="" THEN 3500
  352. 3510  IF Z="A" OR Z="a" THEN GAME=100:GOTO 3540
  353. 3520  IF Z="B" OR Z="b" THEN GAME=250:GOTO 3540
  354. 3530  IF Z="C" OR Z="c" THEN GAME=500:GOTO 3540 ELSE 3500
  355. 3540  CLS:RETURN
  356. 3550  NOPLAY=NOPLAY+1
  357. 3560  LOCATE 4,1:COLOR 15,0
  358. 3570  PRINT "The Bone Yard Is Empty":IF PL1 THEN 3590
  359. 3580  PRINT "And I Have No Play":PRINT "I Lose My Turn":GOTO 3600
  360. 3590  PRINT "Sorry, You Have No Play":PRINT "So You Lose Your Turn":GOTO 3600
  361. 3600  IF NOPLAY=2 THEN 3610 ELSE FOR AI=1 TO 3500:NEXT:RETURN
  362. 3610  FOR A=1 TO 3000:NEXT:TOT=0:IF PLNO THEN IF CONO THEN 3620 ELSE 3660
  363. 3620  FOR A=1 TO CONO
  364. 3630   TOT=TOT+VAL(LEFT$(MY$(A),1))+VAL(RIGHT$(MY$(A),1))
  365. 3640  NEXT:REMA=TOT MOD 5:TOT=TOT\5:TOT=TOT*5:IF REMA>2 THEN TOT=TOT+5
  366. 3650  YSCR=YSCR+TOT:IF PLNO THEN 3660 ELSE 3700
  367. 3660  TOT=0:FOR A=1 TO PLNO
  368. 3670   TOT=TOT+VAL(LEFT$(YOU$(A),1))+VAL(RIGHT$(YOU$(A),1))
  369. 3680  NEXT:REMA=TOT MOD 5:TOT=TOT\5:TOT=TOT*5:IF REMA>2 THEN TOT=TOT+5
  370. 3690  MYSCR=MYSCR+TOT
  371. 3700  CLS:LOCATE 4,29:PRINT "Your Total Score Is"YSCR
  372. 3710  LOCATE 5,30:PRINT "My Total Score Is"MYSCR:IF MYSCR>=GAME AND MYSCR=YSCR THEN 3790
  373. 3720  IF YSCR>=GAME THEN IF YSCR>MYSCR THEN 3770 ELSE 3780
  374. 3730  IF MYSCR>=GAME THEN IF YSCR<MYSCR THEN 3780 ELSE 3770
  375. 3740  LOCATE 7,28:PRINT "One Moment Please, While
  376. 3750  LOCATE 8,28:PRINT "I Reshuffle The BoneYard
  377. 3760  EMPT=0:C=0:B=-1:GOSUB 2170:FOR A=1 TO 7000:NEXT:CLS:GOTO 40
  378. 3770  LOCATE 6,36:PRINT "You Win":GOTO 3800
  379. 3780  LOCATE 6,37:PRINT "I Win":GOTO 3800
  380. 3790  LOCATE 6,31:PRINT "The Game Is A Tie"
  381. 3800  LOCATE 10,23:PRINT "Would You Like To Play Again? <Y/N>"
  382. 3810  GOSUB 3380:IF Z="Y" THEN RUN ELSE IF Z="N" THEN RUN"menu" ELSE 3810
  383. 3820  COLOR 4,0:LOCATE 1,66:PRINT "Dominoes Played":COLOR 3,0
  384. 3830  FOR A=0 TO PLAYED-1
  385. 3840    IF A<17 THEN LOCATE A+2,71:PRINT PLD$(A);
  386. 3850    IF A>16 THEN LOCATE A-14,76:PRINT PLD$(A);
  387. 3860  NEXT
  388. 3870  LOCATE 2,1:PRINT"Your Score Is"YSCR;:COLOR 7,0
  389. 3880  COLOR 2,0:LOCATE 1,1:PRINT"My Score Is"MYSCR;
  390. 3890  RETURN
  391.